package com.parking.order.service;

import com.parking.common.core.model.PageInfo;
import com.parking.order.model.OrderComment;
import com.baomidou.mybatisplus.extension.service.IService;
import com.parking.order.model.dto.AddCommentDto;
import com.parking.order.model.dto.CommentDto;
import com.parking.order.model.dto.ReplyCommentDto;
import com.parking.order.model.param.AddCommentParam;
import com.parking.order.model.param.FindCommentByOrderNumParam;
import com.parking.order.model.param.OrderCommentParam;
import com.parking.order.model.param.ReplyCommentParam;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author 吴彦祖
 * @since 2023年11月28日
 */
public interface IOrderCommentService extends IService<OrderComment> {
    /**
     * 物业回复订单评论
     * 参数 Authorization 物业token
     *     commentId     订单评论Id
     *     replyInfo     回复内容
     * 返回 commentId 评论Id
     *     orderInfoNum 订单编号
     *     commentInfo 评论内容
     *     commentScore 评论分数
     *     commentTime 评论时间
     *     replyInfo   回复内容
     *     replyTime   回复时间
     *     userInfoId  用户信息Id
     *     userInfoName 用户姓名
     * */
    ReplyCommentDto replyComment(ReplyCommentParam param) throws Exception;
    /**
     * 用户添加订单评论
     * 参数 Authorization 用户token
     *      orderInfoNum 订单编号
     *      commentInfo 评论内容
     *      commentScore 评论分数
     * 返回 commentId 评论Id
     *     orderInfoNum 订单编号
     *     commentInfo 评论内容
     *     commentScore 评论分数
     *     commentTime 评论时间
     *     certifiedInfoId 物业信息Id
     *     certifiedInfoName 物业名称
     *     certifiedInfoTel  物业电话
     *     certifiedInfoAddress 物业地址
     * */
    AddCommentDto addComment(AddCommentParam param) throws Exception;

    /**
     * 物业查询有回复评论
     * 参数 是否回复 isReply
     *     订单编号 orderInfoNum
     *     用户信息Id userInfoId
     *     开始时间 startTime
     *     结束时间 endTime
     *     订单评分 commentScore
     * 返回 评论Id commentId
     *     订单编号 orderInfoNum
     *     评论内容 commentInfo
     *     评论时间 commentTime
     *     评论分数 commentScore
     *     回复内容 replyInfo
     *     回复时间 replyTime
     *     用户信息Id userInfoId
     *     用户姓名   userInfoName
     *     用户电话   userInfoTel
     * */
    PageInfo findOrderCommentCertified(OrderCommentParam param) throws Exception;

    /**
     * 平台查询有回复评论
     * 参数 是否回复 isReply
     *     订单编号 orderInfoNum
     *     用户信息Id userInfoId
     *     开始时间 startTime
     *     结束时间 endTime
     *     订单评分 commentScore
     *     物业信息Id certifiedInfoId
     * 返回 评论Id commentId
     *     订单编号 orderInfoNum
     *     评论内容 commentInfo
     *     评论时间 commentTime
     *     评论分数 commentScore
     *     回复内容 replyInfo
     *     回复时间 replyTime
     *     物业信息Id certifiedInfoId
     *     物业名称 certifiedInfoName
     *     物业电话 certifiedInfoTel
     *     物业地址 certifiedInfoAddress
     *     用户信息Id userInfoId
     *     用户姓名   userInfoName
     *     用户电话   userInfoTel
     * */
    PageInfo findOrderCommentPlatform(OrderCommentParam param) throws Exception;

    /**
     * 根据订单编号查询订单评论
     * 参数 出租客Id rentersId
     *      用户Id  userId
     *      订单编号 orderInfoNum
     * 返回  评论内容 commentInfo
     *      评论时间 commentTime
     *      回复内容 replyInfo
     *      回复时间 replyTime
     *      订单评分 commentScore Good Bad OK
     * */
    CommentDto findCommentByOrderNum(FindCommentByOrderNumParam param) throws Exception;
}
